package com.ruoyi.produce.process.planself.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.util.List;

/**
 * 生产计划，数据传输对象，面向前端需求
 * @author lsy 2021.8.23
 * 修改：
 */
@Data
public class ProducePlanSelfDto {
    /**
     * 自产生产计划编号
     */
    @NotNull
    @ApiModelProperty(value = "自产生产计划编号", required = true)
    private String planSelfId;

    /**
     * 自产生产计划父级编号
     */
    @ApiModelProperty("自产生产计划父级编号")
    private String planSelfIdParent;

    /**
     * 关联销售编号
     */
    @ApiModelProperty("关联销售编号")
    private String saleOrderId;

    /**
     * 产品编号
     */
    @NotNull(message = "请添加产品")
    @ApiModelProperty(value = "产品编号",required = true)
    private String produceId;

    /**
     * 产品名称
     */
    @ApiModelProperty("产品名称")
    @Excel(name = "产品名称")
    private String produceName;

    /**
     * 类别编号
     */
    @ApiModelProperty("类别编号")
    @Excel(name = "类别编号")
    private String baseCategoryId;

    /**
     * 类别名称
     */
    @ApiModelProperty("类别名称")
    @Excel(name = "类别名称")
    private String baseCategoryName;

    /**
     * 计量单位编号
     */
    @ApiModelProperty("计量单位编号")
    @Excel(name = "计量单位编号")
    private String baseUnitId;

    /**
     * 计量单位名称
     */
    @ApiModelProperty("计量单位名称")
    @Excel(name = "计量单位名称")
    private String baseUnit;

    /**
     * 产品规格
     */
    @ApiModelProperty("产品规格")
    @Excel(name = "产品规格")
    private String produceSpecs;

    /**
     * 产品品牌
     */
    @ApiModelProperty("产品品牌")
    @Excel(name = "产品品牌")
    private String produceBrand;

    /**
     * 员工编号
     */
    @ApiModelProperty(value = "员工编号")
    private String staffId;

    /**
     * 员工名称
     */
    @ApiModelProperty(value = "员工名称")
    private String staffName;

    /**
     * 计划状态
     */
    @ApiModelProperty("计划状态")
    private String planSelfStatus;

    /**
     * 完成状态
     * 0-未完成、1-已完成
     */
    @ApiModelProperty(value = "完成状态")
    private String completionStatus;

    /**
     * 计划完成数量
     */
    @ApiModelProperty(value = "计划完成数量")
    private Double planSelfNumber;

    /**
     * 已完成数量
     */
    @ApiModelProperty("已完成数量")
    private Double  completedNumber;

    /**
     * 未完成数量
     */
    @ApiModelProperty("未完成数量")
    private Double unfinishedQuantity;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp createTime;

    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp startTime;
    /**
     * 预计完成时间
     */
    @ApiModelProperty("预计完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp predictedFinishingTime;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp endTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 是否审批
     */
    @ApiModelProperty("是否审批")
    private String approvalFlag;

    /**
     * 子级生成计划
     */
    private List<ProducePlanSelfDto> producePlanSelves;
}
